Based on the ECHO-22 design with obscurations in DESI-4037-v6.
Corrector lens refractive properties taken from melt data in DESI-2880.
In [ ]:
import batoid
import os
import yaml
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
In [ ]:
telescope = batoid.Optic.fromYaml("DESI.yaml")
In [ ]:
fig, ax = plt.subplots(figsize=(8, 16))
# Draw a 2D (x,z) slice through the corrector.
telescope.draw2d(ax, only=batoid.optic.Lens, fc='c', alpha=0.2,
labelpos=0.62, fontdict=dict(fontsize=18, weight='bold', color='c'))
telescope.draw2d(ax, only=batoid.optic.Detector, c='b', lw=2)
telescope.draw2d(ax, only=batoid.optic.Baffle, c='r', lw=1, ls=':')
# Fill the (x, z) plane with rays entering the pupil.
z_pupil = telescope.backDist
r_pupil = 0.5 * telescope.pupilSize
x_pupil = np.linspace(-r_pupil, r_pupil, 20)
# Trace and draw 500nm rays from 5 angles covering the field of view.
wlen = 500e-9
fov = np.deg2rad(3.2)
thetas = np.linspace(-0.5 * fov, +0.5 * fov, 5)
for theta in thetas:
v = [np.sin(theta), 0., -np.cos(theta)]
rays = batoid.RayVector([
batoid.Ray([x, 0, z_pupil], v, t=0, wavelength=wlen) for x in x_pupil])
traceFull = telescope.traceFull(rays)
batoid.drawTrace2d(ax, traceFull, c='k', lw=1, start='M1', end='FocalPlane')
ax.set_xlim(-0.6, 0.7)
ax.set_ylim(8.6, 11.2)
ax.set_aspect(1.0)
ax.axis('off')
plt.show()
In [ ]: